package cn.wolfcode.trip.base.service;

import cn.wolfcode.trip.base.domain.User;
import cn.wolfcode.trip.base.query.QueryObject;
import com.github.pagehelper.PageInfo;

import javax.servlet.http.HttpSession;
import java.util.List;

public interface IUserService {

    /**
     * 查询邮箱和密码
     *
     * @param user
     */
    void register(User user);

    /**
     * 用户登录
     *
     * @param user
     * @return
     */
    User login(User user, String verify);

    /**
     * 高级查询
     *
     * @param qo
     * @return
     */
    PageInfo<User> query(QueryObject qo);

    /**
     * 更新
     * @param user
     */
    void updata(User user);

    /**
     * 查询单个用户
     * @param id
     * @return
     */
    User getUser(Long id);

    /**
     * 添加指定用户的积分
     * @param uId 指定用户
     * @param grade 积分
     */
    void addGrade(Long uId, Integer grade);
    /**
     * 减少指定用户的积分
     * @param uId 指定用户
     * @param grade 积分
     */
    void minusGrade(Long uId, Integer grade);

    /**
     * 获取指定用户的积分
     * @param userId
     * @return
     */
    Integer getGradeById(Long userId);

    /**
     * 验证账号是否绑定手机
     * @param phoneNumber 手机号
     * @return 如果绑定了返回 true
     */
    boolean validataBindPhoneNumber(String phoneNumber);

    /**
     * 根据手机号查询指定用户
     * @param phoneNumber
     * @return
     */
    User selectByPhoneNumber(String phoneNumber);

    /**
     * 积分排行榜
     */
    PageInfo<User> listGradeTop(QueryObject qo);

    /**
     * 查询指定用户的全部关注对象
     * @param userId
     * @return
     */
    List<Long> selectForFollow(Long userId);

    /**
     * 查询我的所有关注用户
     * @return
     */
    List<User> selectFollowUsers(List<Long> Ids);

    /**
     * 查询我的所有粉丝
     * @return
     */
    List<Long> selectForFuns(Long id);

    /**
     * 获取用户可能感性的人，三个
     * @param userId
     * @return
     */
    Object listInteresteds(Long userId);
}
